/**
 * 创建帐号
 */
package ms.core.gateway.request;

import java.util.Date;
import java.util.Map;

import lombok.Data;
import ms.core.common.AppException;
import ms.core.common.consts.SysErr;
import ms.core.gateway.bean.SysUserBean;
import ms.core.gateway.tool.SessionTool;
import ms.core.tool.*;

@Data
public class CreateUserRequest {
	private String corpUid;				// 企业uid(平台管理员创建其他企业帐号传此参数)
	private String deptUid;				// 部门uid(创建会员子账号，此参数无效)
	private String jobNO;				// 工号
	private String nick;				// 用户昵称或姓名
	private int sex;					// 性别
	private String duty;				// 职位
	private String mobile;				// 用户手机号
	private Date birthday;				// 生日
	private String account;				// 用户帐号(邮箱)
	private int root;					// 帐户类型(0-子账号;1-主账号)
	private String password;			// 密码=md5(原密码+salt)
	private Map<String, Object> ext;	// 会员扩展资料
	private int state;					// 帐号状态(0-未激活;1-正常;2-冻结)

	public static CreateUserRequest getInstance(Map<String, Object> body, String sid) {
		CreateUserRequest usr = JsonTool.objectToBean(body, CreateUserRequest.class);
		
		if (usr==null) throw new AppException(SysErr.SYS_PARAM_ERR);
		
		if (usr.getState()<SysUserBean.STATE_INACTIVE || usr.getState()>SysUserBean.STATE_FROZEN)
			throw new AppException(SysErr.SYS_PARAM_ERR, "无效帐户状态.");

		if (usr.getRoot()<SysUserBean.CHILD_ACCOUNT || usr.getRoot()>SysUserBean.ROOT_ACCOUNT)
			throw new AppException(SysErr.SYS_PARAM_ERR, "帐号级别错误,有效级别为主账号或子帐号.");

		// 未开通帐号人员,如果未传帐号和密码,填写随机id作为帐号密码;否则需要验证帐号密码合法性
		if (StrTool.isBlank(usr.getAccount()) || StrTool.isBlank(usr.getPassword()))
			throw new AppException(SysErr.SYS_PARAM_ERR, "帐号和密码不可为空.");

		// 只允许添加本企业帐号
		usr.setCorpUid(SessionTool.getCorpUid(sid));

		// 会员帐号，无部门信息
		if (!SessionTool.isSuperCorp(sid))
			usr.setDeptUid(null);

		return usr;
	}
}